home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 1 Issue 2
/
PDCD-1 - Issue 02.iso
/
_utilities
/
utilities
/
003
/
_addtopath
/
AddPathSrc
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1994-10-16
|
3KB
|
95 lines
> AddPathSrc
fnm$="AddToPath"
;bl$=
0:cr$=
13:lfcr$=
10+cr$:tab$=
9:esc$=
27:hspc$=
1codesize=&1000:
org codesize:L%=org+codesize
A%=%1100
%1110
%0010
?P%=0:O%=org :
So that addresses are offsets within module
[OPT A%
J; /E R0->command, R1->command tail, R12->1024 bytes workspace, R13 SP,
; R14 link,
mode
MOV R8,R14
O MOV R11,#0 ; Load a handy zero into spare reg
MOV R7,R1
MOV R5,R1
$.findarg2lp LDRB R14,[r5,#1]!
CMP R14,#32
" BGT findarg2lp
STREQB R11,[r5]
.findarg2lp2
$ LDREQB R14,[r5,#1]!
CMPEQ R14,#32
# BEQ findarg2lp2
= MOVLT PC,R8 ; No second arg!
G MOV R4,#0 ; Don't expand into string
D.itsanumber MOV R0,R7 ; Start of command line
MOV R1,R12
MOV R2,#1024
MOV R3,#0
( SWI "XOS_ReadVarVal"
!$ BVS needtocreate
"N TEQ R4,#1 ; If some hacker has set xxx$Path
#M
Q R4,#3 ; to a number, convert to a string,
$" BEQ itsanumber
%? STRB R11,[R1,R2] ; Terminate string
&/ ; R1->xxx$path, R5->path to add
MOV R3,R5
MOV R5,R1
.complp MOV R0,R5
*".despacelp LDRB R2,[R1],#1
+; TEQ R2,#32 ; Strip spaces
," STRNEB R2,[R5],#1
TEQ R2,#0
. TEQNE R2,#
/! BNE despacelp
0$ STRB R11,[R5,#-1]
MOV R4,R3
2?.strcmplp LDRB R14,[R4],#1 ; strcmp r0 and r4
3" LDRB R6,[R0],#1
4!
RS R10,R6,R14
5N
Q PC,R8 ; Component already in path variable
TEQ R6,R14
7 BEQ strcmplp
TEQ R2,#0
9# STRNEB R2,[R5,#-1]
BNE complp
;! MOV R14,#
<B STRB R14,[R5,#-1] ; Need to add to path
=#.copylp LDRB R14,[R3],#1
CMP R14,#32
?# STRGTB R14,[R5],#1
BGT copylp
MOV R1,R12
B .create STRB R11,[R5]
MOV R0,R7
D SUB R2,R5,R1
MOV R3,#0
F4 MOV R4,#2 ; Macro
G' SWI "XOS_SetVarVal"
MOV PC,R8
.needtocreate
MOV R1,R5
L$.countlp LDRB R14,[R5,#1]!
CMP R14,#32
BGT countlp
B create
"Size = ";P%" bytes"
"OS_File",&0A,fnm$,&FFC,,org,O%
align
next line allows shuffling of strings to reduce wastage
2)=0
3" byte(s) wasted by FNalign"
3:[OPTA%:EQUB0:]: